1. 题目

给你两个二进制字符串,返回它们的和(用二进制表示)。

输入为 非空 字符串且只包含数字 1 和 0。

示例 1: 输入: a = "11", b = "1" 输出: "100"

示例 2: 输入: a = "1010", b = "1011" 输出: "10101"

提示:

每个字符串仅由字符 '0' 或 '1' 组成。 1 <= a.length, b.length <= 10^4 字符串如果不是 "0" ,就都不含前导零。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/add-binary 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题思路

先将两字符串用前导0补至同一长度,再做加法。

3. 代码

class Solution {
public:
    string addBinary(string a, string b) {
        string res;
        int len;
        if(a.size()>b.size()) {
            string tmp(a.size()-b.size(),'0');
            len=a.size();
            b=tmp+b;
        }else {
            string tmp(b.size()-a.size(),'0');
            len=b.size();
            a=tmp+a;
        }

        int carry=0,num=0;
        for(int i=len-1;i>=0;--i){
            num=a[i]-'0'+b[i]-'0'+carry;
            res.push_back((num%2)+'0');
            carry=num/2;
        }
        if(carry>0) res.push_back('1');
        reverse(res.begin(),res.end());

        return res;
    }
};

results matching ""

    No results matching ""